<?php

/**
 * Ignus Framework
 *
 * @author Sergey Palyanov <sergey.palyanov@gmail.com>
 * @link http://code.google.com/p/ignus-php/
 * @license http://apache.org/licenses/LICENSE-2.0
 * @package Ignus
 * @subpackage Test
 * @since 0.1
 */

namespace Ignus\Test\Report;

use Ignus\Test\AssertionException;

/**
 * @package Ignus
 * @subpackage Test
 * @since 0.1
 */
interface Reporter
{
    /**
     * Print testcase report header
     * @abstract
     * @param string $caseName
     * @return void
     */
    public function printHeader($caseName);

    /**
     * Print test success
     * @abstract
     * @param string $testName
     * @return void
     * @since 0.4.4
     */
    public function printTestSuccess($testName);

    /**
     * Print test failure
     * @abstract
     * @param string $testName
     * @param Exception $e Exception object
     * @return void
     */
    public function printTestFailure($testName, AssertionException $e);

    /**
     * Print testcase total statistics
     * @abstract
     * @return void
     */
    public function printTotals();

    /**
     * Print testcase report footer
     * @abstract
     * @return void
     */
    public function printFooter();

    /**
     * Print unexpected exception
     * @abstract
     * @param string $testName Test name
     * @param \Exception $e Unexpected exception
     * @return void
     */
    public function printUnexpectedException($testName, \Exception $e);
}
